/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.cycle;

import base.CObject;
import base.CProject;
import base.module.CModule;
import java.util.LinkedList;
import parser.CParser;

public class CWhile extends CModule {
	private LinkedList<CModule> Modules = new LinkedList<CModule>();
	private CObject Condition;



	@Override
	public CObject Parse( LinkedList<String> Tokens ) {
		Tokens.removeFirst();
		Condition = CParser.ParseFunction( Tokens );
		ParseModules( Modules, "цикла", "КонецЦикла" );
		return this;
	}



	@Override
	public void Execute() {
		while( Condition.ToBoolean() ) {
			ExecuteModulesList( Modules );
			if ( CProject.ExitStatus == CProject.EExitStatus.Break ) {
				CProject.ExitStatus = CProject.EExitStatus.No;
				break;
			} else if ( CProject.ExitStatus == CProject.EExitStatus.ExitFunction ) {
				break;
			}
			CProject.ExitStatus = CProject.EExitStatus.No;
		}
	}
}
